package automate

type Common struct {
	CreateTime string `gorm:"column:create_time" json:"createTime"`
	UpdateTime string `gorm:"column:update_time" json:"updateTime"`
}

// GoodsModel 售货机商品配置
type GoodsModel struct {
	GoodsDb
	Common
}

type GoodsDb struct {
	Id             int    `gorm:"column:id" json:"id"`
	PlaceId        int    `gorm:"column:place_id" json:"placeId"`
	Price          int    `gorm:"column:price" json:"price"`
	DiscountAmount int    `gorm:"column:discount_amount" json:"discountAmount"`
	Num            int    `gorm:"column:num" json:"num"`
	SellNum        int    `gorm:"column:sell_num" json:"sellNum"`
	Status         uint8  `gorm:"column:status" json:"status"`
	Icon           string `gorm:"column:icon" json:"icon"`
	ImgList        string `gorm:"column:img_list" json:"imgList"`
	BrandName      string `gorm:"column:brand_name" json:"brandName"`
	Name           string `gorm:"column:name" json:"name"`
	TypeName       string `gorm:"column:type_name" json:"typeName"`
	Message        string `gorm:"column:message" json:"message"`
}

func (m *GoodsDb) TableName() string {
	return "automate_goods"
}

// GoodsBindModel 售货机商品绑定
type GoodsBindModel struct {
	GoodsBindDb
	Common
}
type GoodsBindDb struct {
	Id              int    `gorm:"column:id" json:"id"`
	PlaceId         int    `gorm:"column:place_id" json:"placeId"`
	AutomateGoodsId int    `gorm:"column:automate_goods_id" json:"automateGoodsId"`
	Status          uint8  `gorm:"column:status" json:"status"`
	RoutesId        uint8  `gorm:"column:routes_id" json:"routesId"`
	DeviceSn        string `gorm:"column:device_sn" json:"deviceSn"`
	Message         string `gorm:"column:message" json:"message"`
}

func (m *GoodsBindDb) TableName() string {
	return "automate_goods_bind"
}

// OrderModel 售货机商品订单
type OrderModel struct {
	OrderPayDb
	UpdateTime string `gorm:"column:update_time" json:"updateTime"`
}

type OrderPayDb struct {
	OrderDb
	PayTime       string `gorm:"column:pay_time" json:"payTime"`
	LogisticsTime string `gorm:"column:logistics_time" json:"logisticsTime"`
}

type OrderDb struct {
	Id             int    `gorm:"column:id" json:"id"`
	UserId         int    `gorm:"column:user_id" json:"userId"`
	MemberId       int    `gorm:"column:member_id" json:"memberId"`
	PlaceId        int    `gorm:"column:place_id" json:"placeId"`
	AutomateGoodId int    `gorm:"column:automate_good_id" json:"automateGoodId"`
	NotificationId int    `gorm:"column:notification_id" json:"notificationId"`
	Price          int    `gorm:"column:price" json:"price"`
	Amount         int    `gorm:"column:amount" json:"amount"`
	BuyNum         int    `gorm:"column:buy_num" json:"buyNum"`
	RoutesId       uint8  `gorm:"column:routes_id" json:"routesId"`
	Status         uint8  `gorm:"column:status" json:"status"`
	PayType        uint8  `gorm:"column:pay_type" json:"payType"`
	PlaceName      string `gorm:"column:place_name" json:"placeName"`
	ThirdTradeNo   string `gorm:"column:third_trade_no" json:"thirdTradeNo"`
	TradeNo        string `gorm:"column:trade_no" json:"tradeNo"`
	DeviceSn       string `gorm:"column:device_sn" json:"deviceSn"`
	GoodsName      string `gorm:"column:goods_name" json:"goodsName"`
	GoodsIcon      string `gorm:"column:goods_icon" json:"goodsIcon"`
	Message        string `gorm:"column:message" json:"message"`
	CreateTime     string `gorm:"column:create_time" json:"createTime"`
}

func (m *OrderDb) TableName() string {
	return "automate_orders"
}

// OrderUserRelevancyModel 订单关联
type OrderUserRelevancyModel struct {
	Id       int    `gorm:"column:id" json:"id"`
	UserId   int    `gorm:"column:user_id" json:"userId"`
	TradeNo  string `gorm:"column:trade_no" json:"tradeNo"`
	EndDate  string `gorm:"column:end_date" json:"endDate"`
	EndMonth string `gorm:"column:end_month" json:"endMonth"`
}

func (m *OrderUserRelevancyModel) TableName() string {
	return "automate_orders_user_relevancy"
}

// DividendsLogModel 售货机订单分红表
type DividendsLogModel struct {
	DividendsLogDb
	Common
}
type DividendsLogDb struct {
	Id               int    `gorm:"column:id" json:"id"`
	UserId           int    `gorm:"column:user_id" json:"userId"`
	PlaceId          int    `gorm:"column:place_id" json:"placeId"`
	Amount           int    `gorm:"column:amount" json:"amount"`
	ProfitProportion int    `gorm:"column:profit_proportion" json:"profitProportion"`
	TradeNo          string `gorm:"column:trade_no" json:"tradeNo"`
	DeviceSn         string `gorm:"column:device_sn" json:"deviceSn"`
	PlaceName        string `gorm:"column:place_name" json:"placeName"`
	UserName         string `gorm:"column:user_name" json:"userName"`
	EndDate          string `gorm:"column:end_date" json:"endDate"`
	EndMonth         string `gorm:"column:end_month" json:"endMonth"`
}

func (m *DividendsLogDb) TableName() string {
	return "automate_dividends_log"
}

type PlaceGoodsBindModel struct {
	PlaceGoodsBindDb
	Common
}
type PlaceGoodsBindDb struct {
	Id              int    `gorm:"column:id" json:"id"`
	PlaceId         int    `gorm:"column:place_id" json:"placeId"`
	AutomateGoodsId int    `gorm:"column:automate_goods_id" json:"automateGoodsId"`
	Num             int    `gorm:"column:num" json:"num"`
	WarningNum      int    `gorm:"column:warning_num" json:"warningNum"`
	Status          uint8  `gorm:"column:status" json:"status"`
	Message         string `gorm:"column:message" json:"message"`
}

func (m *PlaceGoodsBindDb) TableName() string {
	return "automate_place_goods_bind"
}

type GoodsInventoryLogModel struct {
	GoodsInventoryLogDb
	Common
}
type GoodsInventoryLogDb struct {
	Id                int    `gorm:"column:id" json:"id"`
	UserId            int    `gorm:"column:user_id" json:"userId"`
	PlaceId           int    `gorm:"column:place_id" json:"placeId"`
	AutomateGoodsId   int    `gorm:"column:automate_goods_id" json:"automateGoodsId"`
	OldNum            int    `gorm:"column:old_num" json:"oldNum"`
	NewNum            int    `gorm:"column:new_num" json:"newNum"`
	AutomateGoodsName string `gorm:"column:automate_goods_name" json:"automateGoodsName"`
	AutomateGoodsIcon string `gorm:"column:automate_goods_icon" json:"automateGoodsIcon"`
	Message           string `gorm:"column:message" json:"message"`
}

func (m *GoodsInventoryLogDb) TableName() string {
	return "automate_goods_inventory_log"
}

type OrderWithPlaceFirst struct {
	Id     int    `gorm:"column:id" json:"id"`       //
	PlaceId int   `gorm:"column:place_id" json:"placeId"` // 网点ID
	DeviceSn   string `gorm:"column:device_sn" json:"deviceSn"`     // 设备标识
	IsOpenFirst   int `gorm:"column:is_open_first" json:"isOpenFirst"`     // 设备标识
}
